const axios = require('axios');
const readline = require('readline');

const rl = readline.createInterface({
	input: process.stdin,
	output: process.stdout
});

const apiUrl = 'http://localhost:11434/api/generate';

appPrompt = () => {
	rl.question('请输入你的问题（输入 "退出" 结束程序）: ', (question) => {
		if (question === '退出') {
			rl.close();
			return;
		}

		const request = {
			model: 'deepseek-r1:1.5b',
			prompt: question
		};

		axios
			.post(apiUrl, request)
			.then((response) => {
				const data = response.data;
				const lines = data.split('\n');
				let result = '';
				for (const line of lines) {
					if (line.trim() === '') continue;
					const jsonObj = JSON.parse(line);
					console.log('&回复数据流: ', jsonObj.response);
					result += jsonObj.response;
					if (jsonObj.done) {
						break;
					}
				}
				console.log('#回复结果: ', result);
				appPrompt();
			})
			.catch((error) => {
				console.error('请求出错: ', error.message);
				appPrompt();
			});
	});
};

appPrompt();

rl.on('close', () => {
	console.log('程序已结束');
});

//公式1：首项加末项乘以项数除以2。
//公式2：等差数列前\(n\)项和等于首项乘以项数，再加上项数与项数减一的乘积的一半与公差的乘积。即：\(\frac{n(a_1+a_n)}{2}\)。
//推理1：有一个等差数列，首项是 3，公差是 2，前 10 项的和是多少？
//推理2：100个和尚吃100个馒头，大和尚一个人吃3个，小和尚3个人吃1个，问大小和尚各多少人？
//推理3：若三角形的三条边长分别为 \(x + 1\)，\(x + 2\)，\(x + 3\)，当这个三角形是直角三角形时，\(x\) 的值是多少？
//推理4：有甲、乙、丙三个人，一个是教师，一个是医生，一个是律师。已知甲和医生不同岁，医生比乙年龄小，丙比律师年龄大。请问甲、乙、丙分别从事什么职业？

//问题1： 美国总统是谁？
//问题2： 中国的首都是哪里？
//问题3： 中国的国旗是什么颜色的？
//问题4： 中国的国庆节是哪一天？
//问题5： 你认为NBA那位运动员是历史最强？
